//
//  CHSContentLayerBackedView.m
//  ZXAnimationUtil_Example
//
//  Created by 朱新明 on 2023/9/11.
//  Copyright © 2023 simon. All rights reserved.
//

#import "CHSContentLayerBackedView.h"



@implementation CHSContentLayerBackedView

///1.对于具有自定义内容的layer-backed views（基于图层的视图-例如系统UIView），您应该继续重写视图的方法来完成绘图。layer-backed views（基于图层的视图）会自动使自己成为其层的委托，并实现所需的委托方法，您不应该更改该配置。相反，你应该实现视图的drawRect:方法来绘制内容。
///2.drawRect:方法做了性能优化，只绘制rect区域

///3.基于视图的绘图，对视图本身的更改通常会导致调用视图（UIKit）的drawRect:方法来使用新参数重新绘制内容。是基于动态位图的图层绘图（drawLayer:inContext:）的包装。这个绘制需要通过主线程上的CPU完成，所以这种方式绘制是昂贵的。
///4.系统创建了一个图形上下文。并让自己绘制提供位图。
///5.如果实现了代理方法（drawLayer:inContext:）就不会调用drawRect方法。
- (void)drawRect:(CGRect)rect {
    // Drawing code
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    
    CGMutablePathRef thePath = CGPathCreateMutable();
    CGPathMoveToPoint(thePath,NULL,15.0f,15.f);
    CGPathAddCurveToPoint(thePath,
                          NULL,
                          15.f,250.0f,
                          295.0f,250.0f,
                          295.0f,15.0f);
 
    CGContextBeginPath(ctx);
    CGContextAddPath(ctx, thePath);
    // Release the path
    CFRelease(thePath);
    
    CGContextSetLineWidth(ctx, 5);
    CGContextStrokePath(ctx);
}


///不要用
///设置contents方式提供静态图像位图：系统没有创建图形上下文。该实现负责创建位图并将其赋值给图层的contents属性。
//- (void)displayLayer:(CALayer *)layer{
//
//}

///图形上下文方式提供动态绘制位图：系统创建了一个图形上下文。在方法中绘制位图到图形上下文中。
///如果委托同时实现了displayLayer:和drawLayer:inContext:方法，则层只调用displayLayer:方法。
//- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx{
//
//}


@end
